Skip to content

运算符

运算符是指能将数值或变量进行相互运算的符号。比如说表达式 4 + 5 = 9。这里,4 和 5 称为操作数,+ 称为运算符。

Python 基础运算符有

  • 算术运算符
  • 比较(关系)运算符
  • 赋值运算符
  • 逻辑运算符

算术运算符

注意

特别注意普通除法/的商是有小数的,而整除//的商是没有小数的。

运算符描述示例
+ 加法两数相加5 + 2 是 7
- 减法两数相减5 – 2 是 3
* 乘法两数相乘5 * 2 是 10
/ 除法两数相除5 / 2 是 2.5
% 取模两数相除后只取余数部分5 % 2 是 1
** 幂运算左操作数为底,右操作数为幂5 ** 2 是 25
// 整除两数相除后只取商的整数部分5 // 2 是 2
python
a = 5
b = 2
print(a+b) #输出7
print(a-b) #输出3
print(a*b) #输出10
print(a/b) #输出2.5
print(a%b) #输出1
print(a**b) #输出25
print(a//b) #输出2

运算符

py
a = 10
b = 3
print(a+b,a%b,a//b,a**b)

程序输出的是

[0/1]

比较(关系)运算符

注意

在程序里,一个等号=是赋值,把右边的值赋予给左边的变量,两个等号==是判断是否相等,是一个运算符,会得到 True 或者 False 的结果。

操作符描述示例
== 相等如果两者相等,返回 True,否则返回 False(5==2) 是 False
!= 不相等如果两者不相等,返回 True,否则返回 False(5!=2) 是 True
> 大于如果左边大于右边,返回 True,否则返回 False(5>2) 是 True
< 小于如果左边小于右边,返回 True,否则返回 False(5<2) 是 False
>= 大于等于如果左边大于等于右边,返回 True,否则返回 False(5>=2) 是 True
<= 小于等于如果左边小于等于右边,返回 True,否则返回 False(5<=2) 是 False
python
a = 5
b = 2
print(a==b) #输出False
print(a!=b) #输出True
print(a>b) #输出True
print(a<b) #输出False
print(a>=b) #输出True
print(a<=b) #输出False

运算符

py
a = 10
b = 3
print(a>b,a<b,a!=b)

程序输出的是

[0/1]

赋值运算符

注意

赋值运算符是为了精简程序,例如,score在原有的基础上加1,可以写成score = score + 1,右边的 score 是原来的值,左边的 score 是新的值。也可以写成score += 1

运算符描述示例
=赋值运算符c = a + b 将 a + b 的运算结果赋值为 c
+=加法赋值运算符c += a 等效于 c = c + a
-=减法赋值运算符c -= a 等效于 c = c - a
*=乘法赋值运算符c _= a 等效于 c = c _ a
/=除法赋值运算符c /= a 等效于 c = c / a
%=取模赋值运算符c %= a 等效于 c = c % a
**=幂赋值运算符c **= a 等效于 c = c ** a
//=取整除赋值运算符c //= a 等效于 c = c // a
python
a = 5
a += 2
print(a) #输出7
a -= 2
print(a) #输出5
a *= 2
print(a) #输出10
a /= 2
print(a) #输出5.0
a %= 2
print(a) #输出1.0
a **= 2
print(a) #输出1.0
a //= 2
print(a) #输出0.0

运算符

py
a = 3
b = 3
c = 9
b += a
c // = b
print(a,b,c)

程序输出的是

[0/1]

逻辑运算符

注意

  • and 就是并且的意思,左右条件同时成立才成立
  • or 是或者的意思,左右条件有一个成立就成立
  • not 是不的意思,否定一个条件
运算符描述示例
and布尔"与" x and y,x 和 y 都是 True,结果才是 True5 > 3 and 5 > 8 是 False
or布尔"或" x or y,x 和 y 只要有一个 True,结果就是 True5 > 3 or 5 > 8 是 True
not布尔"非" not x,x 是 True,结果就是 False,反之亦然not(5 > 8) 是 True
python
a = 5
b = 3
c = 8
print(a > b and a > c) #输出False
print(a > b or a > c) #输出True
print(not a > c) #输出True

运算符

py
a = 2
b = 1
c = 3
print(a > b and a > c,a > b or a > c,not a > c)

程序输出的是

[0/1]

提示

下面的内容建议学完后面的章节再回来看

位运算符

运算符描述实例
&按位与运算符:参与运算的两个值,如果两个相应位都为 1,则该位的结果为 1,否则为 0(5 & 3) 输出结果 1 ,二进制解释:5 的二进制0101,3 的二进制0011,按位进行与运算,结果是:0001,对应十进制是数字 1
|按位或运算符:只要对应的二个二进位有一个为 1 时,结果位就为 1。(5 | 3) 输出结果 7 ,二进制解释: 5 的二进制0101,3 的二进制0011,按位进行或运算,结果是:0111,对应十进制是数字 7
^按位异或运算符:当两对应的二进位相异时,结果为 1(5 ^ 3) 输出结果 6 ,二进制解释: 5 的二进制0101,3 的二进制0011,按位进行异或运算,结果是:0110,对应十进制是数字 6
~按位取反运算符:对数据的每个二进制位取反,即把 1 变为 0,把 0 变为 1。~x 类似于 -x-1(~5 ) 输出结果 -6 ,二进制解释: 5 的二进制0101,按位取反,得到1010, 以一个有符号二进制数的补码形式存在,对应的十进制是-6。原码反码补码知识点
<<左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补 0。5 << 1 输出结果 10 ,二进制解释:5 的二进制00101,<<1 之后变成 01010,对应十进制是数字 10,相当于乘 2
>>右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数,低位丢弃,高位补符号位。5 >> 1 输出结果 2 ,二进制解释: 5 的二进制00101,>>1 之后变成 00010,对应十进制是数字 2,相当于整除 2
python
a = 5 #二进制为0101
b = 3 #二进制为0011
print(a & b) #输出1,二进制为0001
print(a | b) #输出7,二进制为0111
print(a ^ b) #输出6,二进制为0110
print(~a) #输出-6,二进制为1010
print(a<<1) #输出10,二进制为01010
print(a>>1) #输出2,二进制为0010

成员运算符

运算符描述实例
in如果在指定的序列中找到值返回 True,否则返回 False。x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in如果在指定的序列中没有找到值返回 True,否则返回 False。x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。
python
a = 'apple'
b = 'pp'
print(b in a) #输出True
print(b not in a) #输出False

身份运算符

运算符描述实例
isis 是判断两个标识符是不是引用自一个对象x is y , 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False
is notis not 是判断两个标识符是不是引用自不同对象x is not y , 类似 id(x) != id(y) 。如果引用的不是同一个对象则返回结果 True,否则返回 False。
python
a = 5
b = a
print(b is a) #输出True
print(b is not a) #输出False
print(id(a))
print(id(b)) #可以打印a跟b的id

运算符优先级

运算符描述
**指数 (最高优先级)
~ + -按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
* / % //乘,除,求余数和取整除
+ -加法减法
>> <<右移,左移运算符
&按位与
^按位异或
|按位或
<= < > >= == !=比较运算符
= %= /= //= -= += *= **=赋值运算符
is 、is not身份运算符
in 、not in成员运算符
not and or逻辑运算符
python
a = 5
b = 3
print(a + b * a) #输出20
print(3>0 and 0>=0) #输出True
print(3>0 or 0>=0)  #输出True
print(10 << 1)      #输出20
print(10 >> 1)      #输出5
print(10 ** 2)      #输出100